1. Field of the Invention
This invention relates generally to telephone private branch exchanges (PBXs) and, more particularly, to a system and method for retrieving telephone call statistics from PBXs and generating useful reports therefrom.
2. Related Information
Private Branch Exchanges (PBXs) are switching devices used by organizations with a need for internal telephone communication and for routing telephone calls from external telephone lines to internal telephones. A PBX may be connected to a switching office of the public telephone network, and multiple PBXs may be tied together to handle a large number of telephone lines.
As technology has improved, PBXs have become more sophisticated, employing computer circuits and data storage facilities to automatically route telephone calls to available agents, and to monitor call information such as the duration of each call. Such PBXs are sometimes called CBXs (Computerized Branch Exchanges) to distinguish them from less capable devices. As an example, these CBXs can be used in an airline reservation system employing dozens or even hundreds of airline reservation agents, whereby a CBX routes incoming calls made to a toll-free number to an available agent. Agents can "log on" to the CBX by entering their log-on ID from the telephone at which they will service incoming calls.
An example of a known CBX is the ROLM 9751 family of CBXs, including the models 30 and 80. These CBXs can automatically store information regarding where each call was routed (i.e., which phone line), the duration of each call, the length of time required before the call was answered, and the like. This information, which is stored and accumulated in the CBX over a predetermined time period (such as every 15 minutes), can be retrieved and monitored by supervisors using preformatted data reports. Based on the preformatted data reports, the supervisors can make personnel changes due to changes in the incoming telephone call load.
FIG. 1 depicts in simplified form a conventional CBX configuration which may comprise a ROLM 9751 family device, for example. The CBX 101 includes means for accepting a plurality of input lines L1 to L4 and for servicing a plurality of telephones P1 to P6 connected thereto, grouped into two groups G1 and G2 for purposes of automatic call distribution. Although FIG. 1 shows only a few telephone lines for the purposes of illustration, it will be appreciated that dozens of such telephone lines may be handled by a single CBX. CBX 101 comprises a first CPU 102 for controlling switching hardware 103 to accept telephone calls from the incoming lines and route each call to an appropriate telephone line based on well known criteria such as selecting the first available line in a group.
First CPU 102 is coupled to and communicates with second CPU 104 for the purpose of transferring call information, such as the starting and ending time of each call. CPU 104 collects such call information on a call-by-call basis, accumulates certain of the information (such as total talk time for all calls in a time period) and stores it on disk 105 for later retrieval. CBX 101 is also coupled to a plurality of PCs 107 and 108 through serial ports 106. At least one PC may be coupled to a printer 109 for printing various reports displayed on the PC. Additionally, printers may be directly connected to a serial port such as element 106.
Both CPU 102 and CPU 104 may comprise any suitable microprocessor and any suitable operating system. In various embodiments, an Intel family microprocessor such as the 80486 may be used, and SCO UNIX may be used for the operating system.
During operation, human supervisors operate each PC 107 and 108 to monitor the call information collected by CPU 104, such as total number of calls per unit of time, total number of calls per group of telephones, and the like. The supervisors enter commands from each PC which are transmitted through serial ports 106 to CPU 104, and a computer program on second CPU 104 (not shown) retrieves call information from its memory and/or disk 105 and transmits preformatted data to the requesting PC for display. Data may be stored on disk 105 for several days and is typically deleted automatically on a "rolling" time basis.
In large installations, calls are often directed to a particular "pool" or group of agents connected to the same CBX, and if that particular group becomes overburdened with incoming telephone calls, a supervisor may detect this condition (by reviewing the report data) and may accordingly assign more agents to the group in order to help balance the load.
While automated reports such as those discussed above are adequate in many cases, there has been an unsatisfied need for more sophisticated and reliable information. For example, clients with large installations (including multiple CBXs distributed across various sites) may be interested in information such as:
the number of calls received by a particular agent over a long period of time (days, weeks, or a year)
the average time spent talking by a particular agent over a long period of time
the average time spent talking per arbitrarily defined group of agents (i.e., groups distinct from those predefined by the CBX)
for groups of agents which are organized into higher level management structures, the average waiting time for agents in that management group
statistics accumulated across a plurality of CBXs (such as a department which requires multiple CBXs, or geographically separate groups)
trend analysis of data, such as the number of received calls increasing or decreasing over time (including comparison of busy parts of a week)
comparison of activity of an individual agent with the performance of the group or department of which he is a member
tracking the quality of service being provided to customer callers.
Because of the manner in which CBXs are connected into various systems, it has heretofore been difficult or impossible to assimilate information across a plurality of CBXs, each of which maintains its own database, or to accumulate information on a basis other than that already accumulated by the CBX. For example, information relating to a particular department or corporate division may end up being distributed across two different CBXs. As another example, management structures or hierarchical groupings of agents (such as a Sales group and a Service group) cannot be formed within a CBX, and even if this were possible, such groupings could not span across multiple CBXs. Accordingly, there is an unsatisfied need to automatically accumulate and analyze CBX information from a plurality of CBXs, some of which may be at different geographical locations.
It would be desirable to track telephone calling information based on an artificially created hierarchy, instead of relying on the rigid hardware-driven grouping of phone lines and trunk lines. For example, it would be desirable to assign a select group of agents to a department or organization, and to further assign these departments or organizations to a larger division or other corporate structure. Telephone calling information could then be automatically tracked based on departments, divisions, or other hierarchical groupings. As an example, it would be desirable to combine telephone calling statistics from all the Sales groups into the Sales division. This has heretofore been impossible because of the manner in which CBXs are connected and because of the manner in which data is retained and disseminated from the CBX. If such information were to be copied and stored across multiple CBXs, severe configuration problems could result, and permanent communication links among the CBXs would be required to ensure that all the information was up-to-date. Consequently, it is perceived as an advantage to maintain a physical segregation between the switching information stored in each CBX and organizational information stored in a separate location on a different computer.
Another desirable feature is the ability to reorganize hierarchies of information as described above without losing the underlying telephone call information.
A means of rapidly rearranging the collection and presentation of telephone call information is needed. It would be desirable, for example, to quickly set up a data collection process which could automatically track calling patterns attributable to a particular agent or department over a lengthy time interval without also collecting information for all other such agents or departments. Moreover, it is desirable to have certain data preaccumulated into fixed intervals (such as monthly or yearly statistics) instead of re-generating such information from a huge database of "raw" data when a report is needed. This would improve report performance and reduce data storage requirements.
Additionally, it would be desirable to provide mathematical operations based on the collected data in essentially real time; for example, a moving window of average calls per hour for a particular group or department. It would also be desirable to automatically single out agents who are making or accepting personal calls, or who consistently underperform.
Long-term statistical analysis of telephone call data is also a desirable feature, particularly for forecasting purposes. For example, it is desirable to compile reports regarding long-term trends in the number of calls per hour per agent or department. Providing such information has been extremely difficult because of the aforementioned problems.
Finally, various conventional report generation methods generally require the report creator to understand details of an underlying database representation in order to create a useful report therefrom, forcing users to undergo extensive database training. Moreover, there is a general lack of flexibility in reporting tools, forcing users to adjust to particular report formats instead of allowing the user to define report formats using a user-friendly interface. For example, most database reporting tools require an understanding of a programming language to create customized reports. This hinders custom report creation because it requires particular skills and debugging time.